/* import Foundation class FlatBezelObjectCell: QSObjectCell { override func preferredImagePosition() -> NSControl.ImagePosition { return .imageAbove } override func draw(withFrame cellFrame: NSRect, in controlView: NSView?) { if let controlView { let isFirstResponder = controlView.window?.firstResponder == controlView && !(controlView is NSTableView) let dropTarget = isHighlighted && ((highlightsBy.rawValue & NSCell.StyleMask.changeBackgroundCellMask.rawValue) != 0) && !isBezeled var fillColor: NSColor? let strokeColor = NSColor.clear if isFirstResponder { fillColor = self.highlightColor() } else { fillColor = self.backgroundColor } if dropTarget { fillColor = NSColor(red: 0.77, green: 0.91, blue: 0.96, alpha: 1) } fillColor?.setFill() strokeColor.setStroke() let roundRect = NSBezierPath() roundRect.append(withRoundedRectangle: cellFrame, withRadius: cellRadiusFactor()) roundRect.fill() drawInterior(withFrame: drawingRect(forBounds: cellFrame), in: controlView) } } override func titleRect(forBounds _rect: NSRect) -> NSRect { var rect = _rect rect = NSOffsetRect(rect, 0, -4) return super.titleRect(forBounds: rect) } override func drawText(for drawObject: QSObject!, withFrame cellFrame: NSRect, in controlView: NSView!) { if imagePosition == .imageOnly { return } var abbrString: String? = nil if controlView.responds(to: #selector(QSSearchObjectView.matchedString)) { abbrString = (controlView as! QSSearchObjectView).matchedString() } var nameString: String? = nil var hitMask: NSIndexSet? = nil let ranker = drawObject.ranker() if ranker != nil && abbrString != nil { nameString = ranker?.matchedString(forAbbreviation: abbrString, hitmask: &hitMask, inContext: nil) } if (nameString == nil) { nameString = drawObject.displayName() } let rankedStringIsName = nameString == drawObject.displayName() || nameString == nil if nameString == nil { nameString = drawObject.identifier() ?? "Unknown" } let useAlternateColor = controlView is NSTableView && (controlView as! NSTableView).isRowSelected((controlView as! NSTableView).row(at: cellFrame.origin)) let mainColor = textColor() ?? (useAlternateColor ? .alternateSelectedControlTextColor : .controlTextColor) let fadedColor = mainColor.withAlphaComponent(0.50) let textDrawRect = titleRect(forBounds: cellFrame) let titleString = NSMutableAttributedString(string: nameString!) let nameAttributes = (value(forKey: "nameAttributes") as? [NSAttributedString.Key : Any]) let detailsAttributes = (value(forKey: "detailsAttributes") as? [NSAttributedString.Key : Any]) titleString.setAttributes(rankedStringIsName ? nameAttributes : detailsAttributes, range: NSMakeRange(0, titleString.length)) if abbrString != nil && abbrString!.hasPrefix("QSActionMnemonic") { titleString.addAttribute(.foregroundColor, value: rankedStringIsName ? fadedColor : fadedColor.withAlphaComponent(0.8), range: NSMakeRange(0, titleString.length)) var hits: Int = 0 let count = hitMask?.getIndexes(&hits, maxCount: titleString.length, inIndexRange: nil) for i in 0..<(count ?? 0) { for j in 1.. { } } } } NSUInteger i = 0; NSUInteger j = 0; NSUInteger hits[[titleString length]]; NSUInteger count = [hitMask getIndexes:(NSUInteger *)&hits maxCount:[titleString length] inIndexRange:nil]; NSDictionary *attributes = @{ NSForegroundColorAttributeName: rankedStringIsName ? mainColor : fadedColor }; for(i = 0; i